package com.pdd.util;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

/**
 * @创建时间: 2018/8/20 - 16:37
 * @编写人员: 丷教皇
 * @文件描述: 上传工具类
 */
public class UploadUtil {


    /**
     * 处理上传的方法
     * @param multipartFile 要上传的对象
     * @param request  请求对象
     * @return  上传后的文件地址，如果失败返回null
     */
    public static String upload(MultipartFile multipartFile, HttpServletRequest request){
        String fileName = multipartFile.getOriginalFilename();
        long size = multipartFile.getSize();

        System.out.println("文件名" + fileName);
        System.out.println("大小" + size);

        //截取文件后缀名
        String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);

        //随机生成新文件名
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddmmssms");
        String time = sdf.format(new Date());

        //随机生成新文件名，4位随机数
        Random random = new Random();
        int ranNum = random.nextInt(9000) + 1000;

        //拼接，获取目标文件名(要储存在服务器中的文件名)
        String  targetName = time + ranNum + "." +  suffix;

        //上传的目标文件夹
        String uploadDir = request.getServletContext().getRealPath("/upload");
        System.out.println(uploadDir);

        //如果目标文件夹不存在
        File dir = new File(uploadDir);
        if(!dir.exists()){
            dir.mkdir();
        }

        //将上传的文件写入到目标位置
        File uploadFile = new File(uploadDir,targetName);
        try {
            multipartFile.transferTo(uploadFile);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return "/upload/" + targetName;
    }

}
